﻿using DynConDevCorp.OpenArch.SmartData.Interfaces;

namespace DynConDevCorp.OpenArch.SmartData.Interfaces
{
    /// <summary>
    /// This is the ultimate base interface for all classes within the Smart Architecure.
    /// </summary>
    public interface ISmartBase : ISmartDispatchable
    {
        #region Public Instance Properties

        /// <summary>
        /// Gets the entity which has direct ownership of this instance.
        /// </summary>
        /// <value>The owning entity.</value>
        ISmartEntity OwningEntity { get; }

        /// <summary>
        /// Sets the entity which has direct ownership of this instance.
        /// </summary>
        /// <param name="entity">The entity.</param>
        void SetOwningEntity(ISmartEntity entity);

        #endregion
    }
}